package com.aiwiown.face;

import java.util.Map;

/**
 * 请求接口。
 *
 * @author carver.gu
 * @since 1.0, Sep 12, 2009
 */
public interface ApiRequest<T extends ApiResponse> {
    /**
     * 获取请求的形式
     *
     * @return ApiMethod
     */
    ApiMethod getApiMethod();

    /**
     * 获取请求地址
     *
     * @return String
     */
    String getApiUrl();

    /**
     * 获取所有的Key-Value形式的文本请求参数集合。其中：
     * <ul>
     * <li>Key: 请求参数名</li>
     * <li>Value: 请求参数值</li>
     * </ul>
     *
     * @return 文本请求参数集合
     */
    Map<String, String> getTextParams() throws IllegalAccessException;

    /**
     * 获取所有的Key-Byte[]形式的文本请求参数集合。其中：
     * <ul>
     * <li>Key: 请求参数名</li>
     * <li>Value: 请求参数值</li>
     * </ul>
     *
     * @return 图片请求参数集合
     */
    Map<String, byte[]> getByteArrayParams() throws IllegalAccessException;

    /**
     * 得到当前接口的版本
     *
     * @return API版本
     */
    String getApiVersion();

    /**
     * 得到当前API的响应结果类型
     *
     * @return 响应类型
     */
    Class<T> getResponseClass();

    /**
     * @return
     */
    String getBizContent();

    /**
     * 签名方法
     *
     * @return
     */
    String signVersion();

    /**
     * 签名消息
     *
     * @return
     */
    String getSignInfo(String apiKey, String secretKey) throws Exception;

}
